package com.qunar.wan.common_api.service;

import com.qunar.wan.common_api.model.Activity;
import com.qunar.wan.common_api.model.Query;
import com.qunar.wan.common_api.model.User;
import com.qunar.wan.common_api.model.UserActivity;
import com.qunar.wan.common_api.model.enums.EvaluateStatus;
import com.qunar.wan.common_api.service.mapper.UserActivityMapper;
import com.qunar.wan.common_api.serializer.RowBounds;

import java.util.List;

/**
 * User: huiming.suo Date: 13-11-27 Time: 下午3:39
 */
public interface UserActivityService extends BaseService<UserActivity, UserActivityMapper> {

    /**
     * 活动的所有参与者，可分页
     */
    List<User> selectUsersByActId(int actId, RowBounds rowBounds);

    /**
     * 活动的所有参与者
     */
    List<User> selectUsersByActId(int actId);

    /**
     * 用户参加的所有活动
     */
    List<Activity> selectActsByUserId(int userId, RowBounds rowBounds);

    /**
     * 用户参加过的活动
     */
    List<Activity> selectParticipatedActsByUserId(int userId, RowBounds rowBounds);

    /**
     * 用户参加过的活动总数
     */
    int selectParticipatedActsCount(int userId);

    /**
     * 用户报名没参加的活动
     */
    List<Activity> selectEnrollActsByUserId(int userId, RowBounds rowBounds);

    /**
     * 用户是否报名参加了活动
     * 
     * @return 已报名true，未报名false
     */
    boolean isUserEnroll(int userId, int actId);

    /**
     * 活动参加人数
     */
    int getActPartyNum(int actId);

    /**
     * 根据时间链接查询
     * 
     * @param query
     */
    List<UserActivity> selectByTimeQuery(Query query, RowBounds rowBounds);

    /**
     * 根据时间链接查询所有
     * 
     * @param query
     */
    List<UserActivity> selectByTimeQuery(Query query);

    boolean signUp(int activityId, int userId);

    /**
     * 活动参加人数
     */
    EvaluateStatus getUserEvaluateStatus(int userId, int actId);

    UserActivity selectByUserIdActId(int userId, int actId);

    String assess(Activity activity, EvaluateStatus evaluateStatus, User assessmentor);

    /**
     * 插入方法在BaseService中
     */
    /**
     * 修改评价状态方法在BaseService中
     */
}
